import { RankTypes } from "./config";
//节流函数
let timer;

const debounce = (func, delay) => {
  return (...args) => {
    if(timer) {
      clearTimeout(timer);
    }
    timer = setTimeout(() => {
      func.apply(this, args)
    }, delay);
  }
}

export {debounce};

//处理歌手列表拼接歌手名字
export const getName = (list) => {
  let str = "";
  list.map((item, index) => {
    str +=  index === 0 ? item.name : "/"+item.name;
    return item;
  })
  return str;
}

//处理数据，找出第一个没有歌名的排行榜的索引
export const filterIndex = (rankList) => {
  for(let i = 0; i < rankList.length-1; i++) {
    if(rankList[i].tracks.length && !rankList[i+1].tracks.length){
      return i + 1;
    }
  }
}

//找出排行榜的编号
export const filterIdx = (name) => {
  for(let key in RankTypes) {
    if(RankTypes[key] === name) 
      return key;
  }
  return null;
}

// 给css3相关属性增加浏览器前缀，处理浏览器兼容性问题
let elementStyle = document.createElement('div').style;

let vendor = (() => {
  //首先通过transition属性判断是何种浏览器
  let transformNames = {
    webkit: 'webkitTransform',
    Moz: 'MozTransform',
    O: 'OTransfrom',
    ms: 'msTransform',
    standard: 'Transform'
  };
  for(let key in transformNames) {
    if(elementStyle[transformNames[key]]!==undefined) {
      return key;
    }
  }
  return false
})();

export function prefixStyle(style) {
  if (vendor === false) {
    return false;
  }
  if (vendor === 'standard') {
    return style;
  }
  return vendor + style.charAt(0).toUpperCase() + style.substr(1);
}

//判断一个对象是否为空对象
export const isEmptyObject = (obj) => Object.keys(obj).length === 0;

//转换歌曲播放时间
export const formatPlayTime = (interval) => {
  interval = interval | 0
  const minute = interval / 60 | 0
  const second = (interval % 60).toString().padStart(2, '0')
  return `${minute}:${second}`
};

export const getTransitionEndName = (dom) => {
  let cssTransition = ["transition", "webkitTransition"];
  let transitionEnd = {
    "transition": "transitionend",
    "webkitTransition": "webkitTransitionEnd"
  };
  for (let i = 0; i < cssTransition.length; i++) {
    if (dom.style[cssTransition[i]] !== undefined) {
      return transitionEnd[cssTransition[i]];
    }
  }
  return undefined;
};

function getRandomInt(min, max) {
  return Math.floor(Math.random() * (max - min + 1) +min)
}

// 随机算法
export function shuffle(arr) {
  let new_arr = []
  arr.forEach((item) => {
    new_arr.push(item)
  })
  for(let i = 0; i < new_arr.length; i++) {
    let j = getRandomInt(0, i)
    let t = new_arr[i]
    new_arr[i] = new_arr[j]
    new_arr[j] = t
  }
  return new_arr
}

// 找到当前的歌曲索引
export const findIndex = (song, list) => {
  return list.findIndex(item => {
    return song.id === item.id;
  });
}